package bintree.heap.LeetCode;

import java.util.*;

//1046. 最后一块石头的重量 _找最大，用最小堆
public class Num1046_lastStoneWeight {
    public static  int lastStoneWeight(int[] stones) {

        //边界
        if(stones.length == 0){
            return 0;
        }
        //创建一个优先级队列--最大堆
        Queue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

        for(int i : stones){
            queue.offer(i);
        }//此时的优先级队列保存了数组中所有元素

        while(queue.size() > 1){
            int max = queue.poll();//大的
            int min = queue.poll();//小的
            if(max != min){
                queue.offer(max - min);
            }

        }

        return queue.size() == 0 ? 0 : queue.poll();
    }

    public static void main(String[] args) {
        int[] arr = {2,7,4,1,8,1};

        System.out.println( lastStoneWeight(arr));
    }
}
